#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    this->bhw = new Teacher(this);

    this->twh = new Student(this);

//    connect(bhw,&Teacher::hungry,twh,&Student::treat);

//    classIsOver();

//    连接带参数的
//    指针->地址    函数指针->函数地址

    void( Teacher::*teacherSignal)(QString) = &Teacher::hungry;
    void( Student::*studentSignal)(QString) = &Student::treat;
    connect(bhw,teacherSignal,twh,studentSignal);
//    classIsOver();

    QPushButton * btn = new QPushButton("下课",this);
    this->resize(600,400);

//    点击按钮触发下课
//    connect(btn,&QPushButton::clicked,this,&Widget::classIsOver);

//    无参信号和槽的连接
    void( Teacher::*teacherSignal2)(void) = &Teacher::hungry;
    void( Student::*studentSignal2)(void) = &Student::treat;
    connect(bhw,teacherSignal2,twh,studentSignal2);

//    信号连接信号
    connect(btn,&QPushButton::clicked,bhw,teacherSignal2);

//    断开信号
//    disconnect(bhw,teacherSignal2,twh,studentSignal2);

//    *一个信号可以连接多个槽
//    *多个信号可以连接同一个槽函数
//    *信号和槽函数的参数必须一一对应
//    *信号和槽的参数个数是不是需要一致？信号的参数个数可以多于槽的参数个数

}
void Widget::classIsOver()
{
//    下课函数 调用后出发老师饿了的信号
//    emit bhw->hungry();
    emit bhw->hungry("辣子鸡");
}

Widget::~Widget()
{
    delete ui;
}

